#include<iostream>
#include<vector>
#include<queue>
#include<cstring>
#include<cmath>
#include<map>
#include<set>
#include<cstdio>
#include<algorithm>
#define debug(a) cout<<#a<<"="<<a<<endl;
using namespace std;
const int maxn=1e5;
typedef long long LL;
int main(void)
{
  cin.tie(0);std::ios::sync_with_stdio(false);
  string a;string b;string op;
  string p,q;
  cin>>a>>b>>op;
  if(op=="and"){
        string c="";
        string d="";
        if(a.size()>b.size()) swap(a,b);
        LL o=b.size()-a.size();
        for(LL i=1;i<=o;i++){
            d+='0';
        }
        d+=a;
        a=d;
        LL len=a.size();
        for(LL i=0;i<len;i++){
            if(a[i]=='1'&&b[i]=='1'){
                c+='1';
            }
            else c+='0';
        }
        LL num0=0;
        for(LL i=0;i<c.size();i++){
            if(c[i]=='0') num0++;
        }
        if(num0==c.size()){
            cout<<"0"<<endl;return 0;
        }
        bool flag=1;
        for(LL i=0;i<c.size();i++){
            if(flag==1&&c[i]=='0') continue;
            else if(flag==0&&c[i]=='0'){
                    cout<<c[i];
            }
            else if(c[i]=='1'){
                    cout<<c[i];
                    flag=0;
            }
        }
  }
  else if(op=="or"){
        string c="";
        string d="";
        if(a.size()>b.size()) swap(a,b);
        LL o=b.size()-a.size();
        for(LL i=1;i<=o;i++){
            d+='0';
        }
        d+=a;
        a=d;
        LL len=a.size();
        for(LL i=0;i<len;i++){
            if(a[i]=='1'||b[i]=='1'){
                c+='1';
            }
            else c+='0';
        }
        LL num0=0;
        for(LL i=0;i<c.size();i++){
            if(c[i]=='0') num0++;
        }
        if(num0==c.size()){
            cout<<"0"<<endl;return 0;
        }
        bool flag=1;
        for(LL i=0;i<c.size();i++){
            if(flag==1&&c[i]=='0') continue;
            else if(flag==0&&c[i]=='0'){
                    cout<<c[i];
            }
            else if(c[i]=='1'){
                    cout<<c[i];
                    flag=0;
            }
        }
  }
  else if(op=="xor"){
        string c="";
        string d="";
        if(a.size()>b.size()) swap(a,b);
        LL o=b.size()-a.size();
        for(LL i=1;i<=o;i++){
            d+='0';
        }
        d+=a;
        a=d;
        LL len=a.size();
        for(LL i=0;i<len;i++){
            if(a[i]=='0'&&b[i]=='1'){
                c+='1';
            }
            else if(a[i]=='1'&&b[i]=='0'){
                c+='1';
            }
            else c+='0';
        }
        LL num0=0;
        for(LL i=0;i<c.size();i++){
            if(c[i]=='0') num0++;
        }
        if(num0==c.size()){
            cout<<"0"<<endl;return 0;
        }
        bool flag=1;
        for(LL i=0;i<c.size();i++){
            if(flag==1&&c[i]=='0') continue;
            else if(flag==0&&c[i]=='0'){
                    cout<<c[i];
            }
            else if(c[i]=='1'){
                    cout<<c[i];
                    flag=0;
            }
        }
  }
  cout<<endl;
return 0;
}
